#include "cocos2d.h"
#include "AppDelegate.h"
#include "SimpleAudioEngine.h"
#include "script_support/CCScriptSupport.h"
#include "CCLuaEngine.h"
#include "cocos-ext.h"

USING_NS_CC;
USING_NS_CC_EXT;
using namespace CocosDenshion;

AppDelegate::AppDelegate()
{
	// fixed me
	//_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF|_CRTDBG_LEAK_CHECK_DF);
}

AppDelegate::~AppDelegate()
{
	// end simple audio engine here, or it may crashed on win32
	SimpleAudioEngine::sharedEngine()->end();
	//CCScriptEngineManager::purgeSharedManager();
}

bool AppDelegate::applicationDidFinishLaunching()
{
	// initialize director
	CCDirector *pDirector = CCDirector::sharedDirector();
	pDirector->setOpenGLView(CCEGLView::sharedOpenGLView());

	CCEGLView::sharedOpenGLView()->setDesignResolutionSize(480, 320, kResolutionNoBorder);

	// turn on display FPS
	pDirector->setDisplayStats(true);

	// set FPS. the default value is 1.0/60 if you don't call this
	pDirector->setAnimationInterval(1.0 / 60);

	// register lua engine
	CCLuaEngine* pEngine = CCLuaEngine::defaultEngine();
	CCScriptEngineManager::sharedManager()->setScriptEngine(pEngine);

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
	CCString* pstrFileContent = CCString::createWithContentsOfFile("hello.lua");
	if (pstrFileContent)
	{
		pEngine->executeString(pstrFileContent->getCString());
	}
#else
	std::string path = CCFileUtils::sharedFileUtils()->fullPathForFilename("script/luaMain.lua");
	pEngine->addSearchPath(path.substr(0, path.find_last_of("/")).c_str());
	pEngine->executeScriptFile(path.c_str());
#endif 

	//CCScene* scene = CCScene::create();
	//CCLayer *layer = CCLayer::create();

	//CCSize size = CCDirector::sharedDirector()->getWinSize();
	//size.width=size.width/4;
	//size.height=size.height/4;

	//CCLabelTTF* label = CCLabelTTF::create();
	//label->setDimensions(size);
	//label->setString("this is label1!\nthis is label2!\nthis is label3!");

	//CCScrollView* scrollview = CCScrollView::create(size);
	//scrollview->setPosition(CCPointMake(240,160));
	//scrollview->setContainer(label);
	//scrollview->setDirection(kCCScrollViewDirectionVertical);
	//

	//scene->addChild(layer);
	//layer->addChild(scrollview);

	//CCDirector::sharedDirector()->runWithScene(scene);

	return true;
}

// This function will be called when the app is inactive. When comes a phone call,it's be invoked too
void AppDelegate::applicationDidEnterBackground()
{
	CCDirector::sharedDirector()->stopAnimation();
	SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
}

// this function will be called when the app is active again
void AppDelegate::applicationWillEnterForeground()
{
	CCDirector::sharedDirector()->startAnimation();
	SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
}
